package com.example.demo4;

import java.util.List;
import java.util.Random;

public class PersonThread extends Thread {
    private List<Integer> moneys;
    private int totalMoney;
    private Random r = new Random();

    public PersonThread(List<Integer> moneys, String name) {
        super(name);
        this.moneys = moneys;
    }

    public void setTotalMoney(int totalMoney) {
        this.totalMoney = totalMoney;
    }

    public int getTotalMoney() {
        return totalMoney;
    }

    @Override
    public void run() {
        while (true) {
            // 获取当前线程的名称,用于标识是哪个线程抢到了红包
            String name = Thread.currentThread().getName();
            // 对moneys进行同步,确保在同一时间只有一个线程可以访问和修改它
            synchronized (moneys) {
                // 如果红包列表为空,则退出循环,结束抢红包过程
                if (moneys.isEmpty()) {
                    break;
                }
                // 从红包列表中随机移除一个红包,并获取其金额
                int money = moneys.remove(r.nextInt(moneys.size()));
                // 打印哪个线程抢到了多少钱
                System.out.println(name + "抢到" + money);
                // 累加抢到的红包金额,以计算总共抢到多少钱
                totalMoney += money;
                // 模拟抢红包的间隔时间,让线程暂停10毫秒
                try {
                    Thread.sleep(10);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
